Attitude Controller
The purpose of the attitude controller is to reduce spacecraft pointing and rate errors to zero. Attitude control is performed in the ATC frame, which can be defined by any rotation relative to the BDY frame. Typically this rotation is [0 0 0 1], therefore making the ATC frame the same as the BDY frame.
Selected Attitude Controller
You have the option to create any number of attitude controllers with different gains, limits, actuator sets, etc. This provides flexibility for complex missions with two or more phases or modes that have very different control requirements. The dropdown menu in this section enables you to choose among controllers. The Index sets where in the controller dropdown list the controller will appear. You can change a controller's name, add a new controller, and copy or delete the selected controller. The Selected Attitude Controller panel also contains the Run Attitude Control Wizard button, which opens the Attitude Control Wizard window.
Attitude Control Wizard
Use the Attitude Control Wizard interface to populate a PID control system by specifying only the controller bandwidth. The wizard can be a good starting point for designing the PID controller even if you intend to tune it further.
Attitude control block diagram
This block diagram shows the topology of the PID controller implemented in the spacecraft flight software. Three independent attitude controllers, one for each ATC frame axis, are implemented.
Gains and Limits
Gains (ATC)
In this tab, you can adjust the PID Gains for the particular attitude controller. Often, you can start with the Attitude Control Wizard and then refine the gains for your particular system if the default is not sufficient to meet requirements.
Gains are given as a 3x1 vector, with each value corresponding to the gain in the PID loop for each of the three spacecraft ATC controller axes.
Parameter | Description | Units |
---|---|---|
Loop Gain | Gain applied to the output of the loop filter in the main branch of the PID controller | kg*m2 |
Rate Gain | Gain applied to the output of the limiter in the rate branch of the PID controller | 1/s |
Position Gain | Gain applied to the output of the limiter in the position branch of the PID controller | 1/s2 |
Integral Gain 1 | Gain applied to the output of the limited discrete time integrator in the position branch of the PID controller | 1/s3 |
Integral Gain 2 | Gain applied to the output of the 2nd limited discrete time integrator in the position branch of the PID controller (this channel not typically used) | 1/s4 |
Feed Forward Gain | Gain applied to the output of the feed forward limiter in the feed forward branch of the PID controller, typically zero or one. | N/A |
Actuator sets (ATC)
In this section, you can specify which actuator set you want controlling a given axis. Typically the same set is used across all axes, but that is not required. You can also use a DCM/Quaternion to define the attitude control frame if you want it to be different from the body frame.
Upper/Lower saturation limits (ATC)
You can set the upper and lower saturation limits to prevent large errors or integral gains from continuing to grow and disrupt the filter. Selecting the check boxes labeled Update Lower Limit will force the lower limits to be the negative of the upper limits.
Parameter | Description | Units |
---|---|---|
Upper/Lower Torque Command Limit | Upper/lower limit on the output of the loop gain in the main branch of the PID controller | N*m |
Upper/Lower Position Error Limit | Upper/lower limit on the output of the filter in the position branch of the PID controller | rad |
Upper/Lower Rate Error Limit | Upper/lower limit on the output of the filter in the rate branch of the PID controller | rad/s |
Upper/Lower Integral Limit 1 | Upper limit on the output of the discrete time integrator in the position branch of the PID controller | rad*s2 |
Upper/Lower Integral Limit 2 | Upper limit on the output of the discrete time integrator in the position branch of the PID controller | rad*s3 |
Upper/Lower Feed Forward Limit | Upper/lower limit on the output of the filter in the feed forward branch of the PID controller | N*m |
Filters
The Filters tab enables you to set the numerator and denominator coefficients of the loop, position, rate, and feed forward filters in each of the attitude controller axes.
Parameter | Description |
---|---|
Loop Filter | Loop discrete (z-domain) filter located in the main branch of the PID controller |
Position Filter | Discrete (z-domain) filter located in the position branch of the PID controller |
Rate Filter | Discrete (z-domain) filter located in the rate branch of the PID controller |
Feed Forward Filter | Feed forward torque discrete (z-domain) filter |
Feed Forward and additional controller options
You can choose which of the three parameters you would like to feed forward into the attitude controller.
Parameter | Description |
---|---|
Include Guidance Command | Guidance command is the acceleration fed forward. (e.g. the angular acceleration during a slew multiplied by the inertia to get torque) |
Include Gyroscopic Torque | The onboard estimate of the current gyroscopic disturbance torque is fed forward. |
Include Momentum Control Torque | The estimated torque applied by the momentum controller is fed forward. |
Additional controller options are also available to allow for greater flexibility in your attitude controller.
Parameter | Description |
---|---|
Reset integrators and filters on changing attitude modes | Selecting this check box means that the integrators and filters will not persist across attitude modes. |
Store integrator states on change from this controller | Select this check box to have SOLIS store the integrator states of the specific controller for future use. |
Scale the loop gain by the inertia estimate | Select this check box to have SOLIS use the estimated mass moment of inertia in the loop gain of the controller. This may be useful for objects with substantial mass property changes. |